/*
 * CS_GUILD_EXILE.cpp
 *
 *  Created on: 2014. 7. 29.
 *      Author: mega
 */

#include "../../User.h"
#include "../../Command.h"
#include "../../Proxy.h"

#include "../protocol/Guild.h"

namespace ProjectZ { namespace NCommand {

static void SendFail(User * pUser, int ack)
{
	::Network::Packet * pAck = ::Network::GETPACKETPOOL()->SEND_NEW();
	*pAck << static_cast<int16_t>(ack);
	pAck->MakePacket(CMD_SC_GUILD_EXILE);
	pUser->Send(pAck);
}

void Command::CS_GUILD_EXILE(User * pUser, ::Network::Packet * pPacket)
{
/*	CS_GUILD_EXILE									0x3268
	{
		u32 		u32gid;							//유저 시퀀스
	}

	SC_GUILD_EXILE									0x3269
	{
		s16				s16ack;					/// ACK_OK: 성공 ,
															/// ACK_GUILD_ALREADY_EXIST: 존재함-사용불가,
															/// ACK_GUILD_PERMISSION_ERROR : 생성권한없음.
															/// ACK_GUILD_ALREADY_SIGN : 이미 길드에 가입됨.
															/// ACK_GUILD_TIME_ERROR : 길드탈퇴후 24시간이 지나지 않음.


		u32				u32Guild_point;			// 추방 후 변경된 길드 포인트
	//	u8				u32Guild_max_member;		//길드 최대 인원
	//	u8				u32Guild_current_member;	//길드 현재 인원
	}*/

	PREPARE_PACKET;

	uint32_t userSeq;	// 추방 유저 SEQ

	*pPacket >> userSeq;

	if (0 >= pUser->GetUserInfo().guild_seq)
	{
		SendFail(pUser, ACK_UNKNOWN_ERROR);
		return;
	}

	if (0 >= userSeq)
	{
		SendFail(pUser, ACK_UNKNOWN_ERROR);
		return;
	}

	KickoutGuildMemberSyn syn;
	syn.user_seq	= pUser->GetUserSeq();
	syn.guild_seq	= pUser->GetUserInfo().guild_seq;
	syn.member_seq	= userSeq;

	if (false == NProxy::SendGuildServer(pUser, syn))
	{
		SendFail(pUser, ACK_UNKNOWN_ERROR);
		return;
	}
}

} /*NCommand*/ } /*ProjectZ*/
